package com.example.objectstream;

import java.io.Serial;
import java.io.Serializable;

/**
 * Serializable:标记型接口（无抽象方法）
 * 为Student类打上Serializable标记
 */
public class Student implements Serializable {
    //JavaBean版本号
    /**
     * 在 Java 中，序列化和反序列化需要保证类的版本兼容性。
     * 为了避免版本不兼容的问题，可以显式声明一个 serialVersionUID。
     * 它是一个唯一标识符，用于验证反序列化时类是否一致。
     */
    @Serial
    private static final long serialVersionUID = 2257399726243480949L;
    private int id;
    private String name;
    /**
     * transient:瞬态关键字
     * 作用：不会将当前属性序列化到本地文件中
     */
    private transient int age;

    public Student() {
    }

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     *
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     *
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     *
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     *
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     *
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "id = " + id + ", name = " + name + ", age = " + age + "}";
    }
}
